import store from '/src/store'
import {topCaseToken} from './constant'
import Fly from 'flyio/dist/npm/wx'
let fly = new Fly()

// 配置拦截器
fly.interceptors.request.use((request, promise) => {
  request.headers[topCaseToken] = store.state.user.token
  request.headers['Accept'] = 'application/json, text/plain, */*'
})

fly.interceptors.response.use((response, promise) => {
  const resmeta = response.data.meta
  const restatus = resmeta.status
  const remessage = resmeta.message
  if (restatus === 'error') {
    if (remessage === 'tokenexpier') {
      console.log('登录失效，重新登录!')
      fly.lock()// 锁住请求队列，先执行获取token操作
      return store.dispatch('user/login')
        .then(() => {
          fly.unlock()
          return fly.request(response.request)
        }).catch(() => {
          fly.unlock()
        })
    } else if (remessage === 'noauthorise') {
      console.log('用户未授权，给我授权！不授权不给用！！')
      store.dispatch('user/updateWxUserInfo') // 查询授权并更新用戶信息
    }
  }
  return response.data
},
(err, promise) => {
  // 网络发生错误后走到这里。
  console.info('请求错误')
  console.error(err)
  if (err.status === 0) {
    wx.showToast({
      title: '哎呀！网络似乎开小差了！',
      icon: 'none',
      duration: 2000
    })
  } else {
    // wx.showToast({
    //   title: '哎呀！不好意思，出错了！' + err.status,
    //   icon: 'none',
    //   duration: 2000
    // })
  }
})
fly.config.baseURL = process.env.BASE_API
export default fly
